/**
 * 一般, setTimeout、等是宏任务,
 * promise是微任务,
 * 在主线程任务执行完了之后, 会把微任务先执行, 然后, 去宏队列中拿出任务, 再去执行.
 */


// 看代码, 说出输出顺序
// 主线程
console.log('script start');

// 宏任务
setTimeout(() => {
  console.log('setTimeout 1');
}, 2000)

// Promise的then 是 微任务,  resolve 和reject是主线任务, 是同步的,
Promise.resolve().then(() => {
  console.log('promise');
})

// 宏任务
//  还要看后面的事件, 谁小就将谁放在宏任务队列的前面.
setTimeout(() => {
  console.log('setTimeout 2');
},1000)

// 主任务
console.log('script end');



/*
预计输出顺序:
  1. script start
  2. script end
  3. Promise
  4. setTimeout 1
  5. setTimeout2

*/


